package com.wande.dataplatform.service;

import com.wande.common.mybatis.core.page.PageQuery;
import com.wande.common.mybatis.core.page.TableDataInfo;
import com.wande.dataplatform.domain.bo.QueryHistoryBo;
import com.wande.dataplatform.domain.dto.QueryExecuteDTO;
import com.wande.dataplatform.domain.dto.QueryResultDTO;
import com.wande.dataplatform.domain.vo.QueryHistoryVO;

/**
 * 数据查询服务接口
 *
 * @author wande
 */
public interface IDataQueryService {

    /**
     * 执行查询
     *
     * @param dto 查询执行DTO
     * @return 查询结果
     */
    QueryResultDTO executeQuery(QueryExecuteDTO dto);

    /**
     * 导出查询结果
     *
     * @param dto 查询执行DTO
     * @param format 导出格式: EXCEL, CSV, JSON
     * @return 导出文件字节数组
     */
    byte[] exportQueryResult(QueryExecuteDTO dto, String format);

    /**
     * 查询历史记录列表
     *
     * @param bo 查询条件
     * @param pageQuery 分页参数
     * @return 历史记录列表
     */
    TableDataInfo<QueryHistoryVO> queryHistoryList(QueryHistoryBo bo, PageQuery pageQuery);

    /**
     * 查询历史记录详情
     *
     * @param id 历史记录ID
     * @return 历史记录详情
     */
    QueryHistoryVO queryHistoryById(Long id);

    /**
     * 删除历史记录
     *
     * @param ids 历史记录ID数组
     * @return 是否成功
     */
    Boolean deleteHistoryByIds(Long[] ids);

    /**
     * 重新执行历史查询
     *
     * @param id 历史记录ID
     * @return 查询结果
     */
    QueryResultDTO reExecuteHistory(Long id);
}
